Some digital data devices, such as printers, are considered to be slow speed devices because their limited memory size and the time required to print a character result in a low average data transfer rate. Other digital data devices, such as computers, are considered to be high speed devices because they can send, receive, and process data at a high average rate.
When a high speed device, such as a computer, is connected directly to a low speed device, such as a printer, the computer cannot send a document to the printer as one prolonged data stream at high speed but must send the document as numerous short bursts of data. This prevents the computer from using the part of its memory in which the document resides and also prevents the computer from spending full time on another processing task.
In order to speed up the document transfer and free the computer and its memory to perform other tasks, message buffers, sometimes called "spoolers", were developed. Spoolers generally have a high speed input-only port connected to the computer and a low-speed output-only port connected to the printer, a memory for temporarily storing the document, and a control unit which receives the document at high speed from the computer and writes the document into the memory, and also reads the document from the memory and sends the document at low speed to the printer. This allows the computer to quickly send the entire document and turn to other tasks while the printer prints the document at its more leisurely rate.
However, most spoolers view the entire contents of their memory as long documents. If the user sends two or more documents to the spooler, and then activates the replay feature, all of the documents in the memory will be printed again, even if the user only desired for a reprint of one document.
Some spoolers have a switch or switches so that the user can normally mark mark the beginning and end of a document. If this is properly done, then activating the replay feature will generally replay only the last document. However, if the user forgets to mark the beginning and end of the document the spooler memory is open and successive documents will be collected in memory as one long document. If the user then activates the replay feature, the entire set of documents will be printed.
There is therefore a need for a message buffer which automatically marks the beginning and end of a document, thereby separating successive documents so that activating the replay feature will cause printing of only the last document.
Also, most spoolers continually reuse the memory so that, at some point, a new document will be written over an older document. However, on occasions, the user may have a document which he wishes to be saved so that he can replay the document at a later time. There is therefore a need for a message buffer which has a provision for saving a document by preventing the memory in which the document is stored from being overwritten by a later document.
In some message buffers, the input and output parameters, such as baud rate, parity, etc., are determined by switches. However, the switches are usually small, generally located on the back of the device or in another inconvenient place, or require a manual to determine the meaning of the switch settings.
There is therefore a need for a message buffer which has command and on-line, or transparent, modes of operation so that the input and output parameters can be controlled by programming signals via an input port. Those skilled in the art will be familiar with command driven modems having both command and on-line modes of operation, such as those shown in U.S. Pat. No. 4,549,302 to Heatherington and U.S. Pat. No. 4,387,440 to Eaton.
Also, there is a need for a message buffer, having a command mode and an on-line mode, to be responsive to a command, through an input port, to change from the on-line mode to the command mode. This command is often called an escape sequence.
However, if the data in a document forms the escape sequence the message buffer will abruptly and unexpectedly switch from the data transfer mode to the command mode. The message buffer will then consider any other information in the document to be a series of valid or invalid commands. At best, the data transfer will be stopped; at worst, the entire contents of the memory will be erased, destroying any documents there, and the operating parameters will be inadvertently changed.
If the input and output parameters of the message buffer are thus inadvertently changed, the data terminal and the message buffer will be attempting to communicate at different speeds, parity, etc. The user will then have to resort to a frustrating trial and error approach of changing the input and output parameters of the data terminal until they match the new, unknown input and output parameters of the message buffer.
There is therefore a need for a message buffer which will automatically change its input and output parameters to a known set of parameters upon receipt of a unique escape command, thereby allowing the data terminal to easily establish or re-establish communication with the message buffer.
Additionally, a message buffer of the type described in this specification is one species of a multispeed asynchronous data communications device. More particularly, the present invention includes at least one port which normally operates as a port for data communications equipment (DCE) as described in EIA Revised Standard RS-232-C. This port is normally configured to be connected to a data terminal equipment (DTE) output port from a computer or terminal.
The preferred embodiment of the present invention is one for which the DCE port may be operated at a plurality of different data speeds. Since the preferred embodiment is designed to have a command mode and a data transmission (transparent) mode of operation for communications into the above referenced DCE port, it is important that the present invention be configured so that it may be forced into its command mode by the data terminal equipment to which it is attached, irrespective of the data speed at which the data terminal equipment is operating. In the prior art, such an arrangement was not possible unless there was a pre-agreed upon data speed for both the data communications equipment and the data terminal equipment, and both devices were forced to their initial states.
However, the present invention is one in which several functions from the data terminal equipment (normally a computer) will be routed to the DCE input port of the present invention. As the computer changes its mode of operation to route different data to the input port of the present invention, the software controlling the output port of the computer may force this port to operate at different data speeds. Therefore, there is a need to establish a method, and to provide apparatus for executing the method, of operating the DCE input port of a multispeed asynchronous device so that the data terminal equipment to which it is attached can force the DCE into its command mode irrespective of the data speed at which the DTE is operating.
In the prior art, it has been known to use a break sequence provided to data communications equipment to force the equipment into a change of operating state. As will be known to those skilled in the art, a break sequence is executed by establishing a particular logic condition on a data transmission line, for at least a predetermined period of time, when the logic condition differs from the logic condition on the data transmission line when the data terminal equipment is idle (not sending any data).
However, the present invention is one in which the prior art approach is inapplicable. First, as will be apparent from the description of the preferred embodiment to follow, the present invention is one which includes modes of operation for which the device must be transparent to a break condition. In other words, if a break condition is received at the input DCE port, it is necessary under some circumstances to transmit the break condition to an output port of the present invention. The particular example which comes to mind is when the preferred embodiment is in a mode of operation connecting its DCE input port to an output port which is in turn connected to a modem. It is often necessary to send a break sequence on to the modem for transmitting an equivalent modulated sequence to the device with which the modem is communicating.
Secondly, if the user of the computer to which the DCE input port of the present invention is connected has called another program which will communicate with the present invention, the newly called program does not have any way of knowing the data speed of the most recent mode of operation of the input port of the present invention. Thus, there is a need to provide the computer with a dependable scheme for forcing a multispeed data communications device into its command mode of operation, irrespective of its current operational state, particularly with respect to data transmission speed.